package com.example.mybatisdemo.controller;

import com.example.mybatisdemo.common.CommonQueryParam;
import com.example.mybatisdemo.entity.Items;
import com.example.mybatisdemo.service.ItemsService;
import com.github.pagehelper.PageInfo;
import org.joda.time.DateTime;
import org.springframework.web.bind.annotation.*;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
/**
 * 商品表 商品信息相关表：分类表，商品图片表，商品规格表，商品参数表(Items)表控制层
 *
 * @author 敲代码的卡卡罗特  公众号：干货食堂
 * @since 2020-05-12 22:53:11
 */
@RestController
@RequestMapping("/items")
public class ItemsController {
    /**
     * 服务对象
     */
    @Autowired
    private ItemsService itemsService;

    /**
     * 通过主键查询单条数据
     *
     * @param id 主键
     * @return 单条数据
     */
    @GetMapping("/get/{id}")
    public Items getById(@PathVariable String id) {
        Items items = itemsService.getById(id);
        return items!=null?items:new Items();
    }

    /**
     * 通过实体类属性查询单条数据
     *
     * @param items 实体
     * @return items
     */
    @GetMapping("/get")
    public Items getByEntity(Items items) {
        Items itemsObj = itemsService.getByEntity(items);
        return itemsObj;
    }

    /**
     * 通过实体类属性查询多条数据
     *
     * @param items 实体
     * @return list
     */
    @GetMapping("/list")
    public List<Items> list(Items items) {
        List<Items> itemsList = itemsService.listByEntity(items);
        return itemsList;
    }

    /**
     * 插入一条数据数据
     *
     * @param items 实体
     * @return
     */
    @PostMapping("/insert")
    public Items insert(@RequestBody Items items){
        itemsService.insert(items);
        return items;
    }

    /**
     * 根据主键更新一条数据数据
     *
     * @param items 实体
     * @return
     */
    @PutMapping("/update")
    public int update(@RequestBody Items items){
        return itemsService.update(items);
    }

    /**
     * 根据主键删除一条数据数据
     *
     * @param id 主键
     * @return
     */
    @DeleteMapping("/delete/{id}")
    public int deleteOne(@PathVariable String id){
        return itemsService.deleteById(id);
    }

    /**
     * 根据主键列表批量删除数据
     *
     * @param ids 主键
     * @return
     */
    @DeleteMapping("/delete")
    public int deleteBatch(@RequestBody List<String> ids){
        int result = 0;
        if (ids!=null&&ids.size()>0) result = itemsService.deleteByIds(ids);
        return result;
    }

    /**
     * 分页查询
     *
     * @param commonQueryParam 查询参数
     * @return
     */
    @PostMapping("/selectPage")
    public PageInfo<Items> selectPage(@RequestBody CommonQueryParam commonQueryParam){
        DateTime dateTime = new DateTime(commonQueryParam.getCreatedTime());
        System.out.println(dateTime.toString("yyyy年MM月dd日"));
        return itemsService.findPage(commonQueryParam.getCurrentPage(),commonQueryParam.getPageSize());
    }

}
